package com.controller;

import com.domian.User;
import com.hsc.mvc.MvcFile;
import com.hsc.mvc.annotations.Controller;
import com.hsc.mvc.annotations.RequestMapping;
import com.hsc.mvc.annotations.RequestParam;
import com.hsc.mvc.annotations.ResponseBody;
import com.hsc.mvc.handler.ModelAndView;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @author
 * @date 2025-05-18
 * @Description 使用配置文件进行管理
 */
@Controller
public class TestController {

    // mvc.xml 文件中了映射关系
    public void test1(int age, String sex) {
        System.out.println("TestController test");
    }

    public void test1(User user) {
        System.out.println("TestController test");
    }


    /**
     * 测试执行框架调用目标方法  进行参数的传递
     *
     * @param user
     * @param date1
     * @param date2
     * @return
     */
    @RequestMapping("/save2")
    public String save2(User user, @RequestParam("uno") String date1, @RequestParam("date") Date date2) {
        System.out.println(user);
        System.out.println(date1);
        System.out.println(date2);
        //咔咔咔一顿处理请求
        //处理完毕，需要给与响应。

        //想要转发响应一个1.jsp
        //原来：request.getRequestDispatcher().forward();
        //现在只需要返回字符串 return "1.jsp"
        return "1.jsp";
    }

    /**
     * 测试执行框架调用目标方法  进行参数的传递
     *
     * @param uname
     * @param photo
     */
    @RequestMapping("/save3")
    public void save3(@RequestParam("uname") String[] uname, @RequestParam("photo") MvcFile[] photo) {
        System.out.println("-------save3-------");
    }

    /**
     * 测试响应过程的实现
     * 进行对1.jsp页面的转发实现
     */
    @RequestMapping("/r")
    public String r1() {
        return "1.jsp";
    }

    /**
     * 测试响应过程的实现 -- 转发页面 并且携带数据
     *
     * @return
     */
    @RequestMapping("/r2")
    public ModelAndView r2() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addAttribute("name", "张三");
        modelAndView.addAttribute("age", 18);
        modelAndView.setViewName("1.jsp");
        return modelAndView;
    }

    /**
     * 测试响应过程的实现 -- 重定向页面
     * @return
     */
    @RequestMapping("/r3")
    public String r3() {
        return "redirect:1.jsp";
    }

    /**
     * 测试响应过程的实现 -- 响应简单字符串
     * @return
     */
    @RequestMapping("/r4")
    @ResponseBody //  表示返回的是字符串类型
    public String r4(){
        return "1.jsp";
    }


    /**
     * 测试响应过程的实现 -- 响应json字符串  需要框架将返回的对象转换为json字符串
     * @return
     */
    @RequestMapping("/r5")
    @ResponseBody
    public List<User> r5(){
        return Arrays.asList(
                new User(1001L,"dmc1","123","男",18),
                new User(1002L,"dmc2","123","女",19),
                new User(1003L,"dmc3","123","男",20)
        );
    }
}
